package net.yla.smartbus.module.ba.group.mapper;

import net.yla.smartbus.module.ba.group.entity.CompanyDO;
import net.yla.smartbus.module.ba.group.entity.GroupEntity;
import net.yla.smartbus.module.ba.group.form.CountParams;
import net.yla.smartbus.module.ba.group.query.GroupQuery;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @description:
 * @author: Yee
 * @date: 2021/6/16 14:36
 */
@Repository
public interface GroupMapper {

    /**
     * 获取符合条件分组的记录集
     *
     * @param countParam
     * @return
     */
    List<GroupEntity> query(CountParams countParam);

    /**
     * 查询分组
     *
     * @param query
     * @return
     */
    List<CompanyDO> getGroups(GroupQuery query);

    /**
     * 获取父公司
     *
     * @param parentId
     * @return
     */
    String getParentName(@Param("parentId") Integer parentId);

    Integer getGParentId(@Param("groupId") Integer groupId);

    /**
     * 根据groupId获取车辆数
     *
     * @param groupId
     * @return
     */
    Integer getCarNum(@Param("groupId") Integer groupId);

    /**
     * 根据groupId获取设备数
     *
     * @param groupId
     * @return
     */
    Integer getDeviceNum(@Param("groupId") Integer groupId);

    /**
     * 逻辑删除公司
     *
     * @param companyId
     * @return
     */
    Integer updateCompany(@Param("companyId") Integer companyId);

    /**
     * 撤销逻辑删除公司
     *
     * @param companyId
     * @return
     */
    Integer updateCompanies(@Param("companyId") Integer companyId);

    /**
     * 逻辑删除公司
     *
     * @param groupId
     * @return
     */
    Integer updateGroup(@Param("groupId") Integer groupId);

    /**
     * 新增机构
     * @param companyDO
     * @return
     */
    Integer insertCompany(CompanyDO companyDO);

    Integer insertGroup(GroupEntity groupEntity);

    Integer getParentId(@Param("groupId") Integer groupId);

    /**
     * 根据 id 查询 分组
     *
     * @param groupId
     * @return
     */
    GroupEntity view(Integer groupId);

    GroupEntity getGroupChildren(@Param("parentId") Integer parentId);

    int updateChildren(@Param("groupId") Integer groupId, @Param("children") byte[] children);

    int delGroup(Integer groupId3);

    int updateGroups(GroupEntity groupEntity);

    GroupEntity getGroup(@Param("groupId") Integer groupId);

    int updateCompanys(CompanyDO companyDO);

    Integer getGroupId(@Param("name") String name);

    Integer updateGroup1(@Param("groupId") Integer groupId);

    Integer getGroupId1(@Param("companyId")Integer companyId);
}
